Em muốn viết 1 chương trình delay dùm timer ma thời gian delay phu thuộc vào 1 port bất kỳ chẳng hạn là port p0 vidu port p0=255 thì thời gian delay sẽ là 255ms
Thông báo
Collapse
No announcement yet.
Xin giu`p đỡ về timer và ngắt
Collapse
X
-
như vậy là bộ đếm của bạn lớn nhất là 255Nguyên văn bởi sdtuan Xem bài viếtEm muốn viết 1 chương trình delay dùm timer ma thời gian delay phu thuộc vào 1 port bất kỳ chẳng hạn là port p0 vidu port p0=255 thì thời gian delay sẽ là 255ms
bạn có thể nạp vào tl0 như sau
mov th0,#ffh
mov TL0,-p0
-
sory mình nhầm
bạn viết như sau
.............
.................
....................
.................
MOV TH0,#HIGH(-1000)
MOV TL0,#LOW(-1000)
mov r0,p0
setb tr0
here:sjmp here
ngat_t0:
CLR TR0
MOV TH0,#HIGH(-1000)
MOV TL0,#LOW(-1000)
SETB TR0
;*****
DEC r0
CJNE r0,#255,KT
công việc
mov r0,p0
kt:
ret
Comment
-
MOV TH0,#HIGH(-1000)
MOV TL0,#LOW(-1000)
mov r0,p0
setb tr0
here:sjmp here
Đây là phần khởi tạo ngắt. Có nghĩa là cứ sau 1ms thì 1 ngắt timer sẽ dc kich hoạt.
ngat_t0:
CLR TR0
MOV TH0,#HIGH(-1000)
MOV TL0,#LOW(-1000)
SETB TR0
;*****
DEC r0
CJNE r0,#255,KT
;công việc
mov r0,p0
kt:
ret
Đây là chương trình phục vụ ngắt timer0.Sau khi ngắt dc kich hoạt thì chương trình phục vụ ngắt dc thực hiện.Chương trình này sẽ giảm r0 và so sánh với 0(tức là 255) nếu khác thì sẽ nhảy đến kt và trở lại chương trình chính, công việc này tiếp tục đến khi nào r0=0 va như vậy thì sẽ delay =r0*1ms .Khi r0=0 thì nó sẽ cập nhập giá trị của P0.
Comment
-
LJMP MAIN
ORG 000BH
LJMP NGAT_T0
MAIN:
MOV TMOD,#11H
MOV TH0,#HIGH(-1000)
MOV TH0,#LOW(-1000)
MOV R0,P0
SETB EA
SETB ET0
SETB TR0
NGAT_T0:
DEC R0
CJNE R0,#255,KT
MOV R0,P0
****** CONG VIEC*****
MOV R0,P0
RETI
kt:
vây nhãn kt mình có phải làm ji để nó way lại chương trình chính
Comment
-
em chưa hiểu 2 lệnh này lắm:
MOV TH0,#HIGH(-1000)
MOV TH0,#LOW(-1000)
nó dc sử dụng khi nào,max là bao nhiêu?
mà mình cứ phải nạp số âm vào ah? dùng khai báo như thế này trong trường hơp như thế nao?
mạo mụi hỏi mong ai biết trả lơi cho em .vì em chưa dùng cái này bao giờ
Comment
-
nó tương đương với lệnhNguyên văn bởi dung h Xem bài viếtem chưa hiểu 2 lệnh này lắm:
MOV TH0,#HIGH(-1000)
MOV Tl0,#LOW(-1000)
nó dc sử dụng khi nào,max là bao nhiêu?
mà mình cứ phải nạp số âm vào ah? dùng khai báo như thế này trong trường hơp như thế nao?
mạo mụi hỏi mong ai biết trả lơi cho em .vì em chưa dùng cái này bao giờ
MOV TH0,#HIGH(65536-1000)
MOV TL0,#LOW(65536-1000)
tức là nạp vào timer giá trị = 65536 - 1000 (= 1ms)
byte cao đưa vào TH0 byte thấp đưa vào TL0
Comment
-
í, cái này trong giáo trình có giải thích mà.
nói nôm na như vầy nhé, giả sử cài TIMER là 8bit, nó sẽ đếm từ 0->255, vậy bạn muốn delay 10uS thì làm sao, bạn cài cho TIMER giá trị ban đầu là 245, vậy sao 10uS nó sẽ tràn về 0. giá trị 245 ~ (-10) đó (8bit). người ta dùng giá trị âm cho dễ nhớ hơn.
Comment
-
Khi dùng timer ở chế độ 16 bít, bạn phải nạp giá trị đầu cho timer vào 2 thanh ghi là TH và TL. Trong chế độ 16 bít, thì giá trị đếm tối đa có thể lên đến 65536, tức là giá trị 16bit = 2 byte. Đưa byte cao vào TH, byte thấp vào TL.em chưa hiểu 2 lệnh này lắm:
MOV TH0,#HIGH(-1000)
MOV TH0,#LOW(-1000)
nó dc sử dụng khi nào,max là bao nhiêu?
mà mình cứ phải nạp số âm vào ah? dùng khai báo như thế này trong trường hơp như thế nao?
mạo mụi hỏi mong ai biết trả lơi cho em .vì em chưa dùng cái này bao giờFor a better world
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Cấu hình chiến game "quốc dân" cho nền tảng AM5: Lựa chọn tối ưu ngân sách với Ryzen 5 7500Fbởi kumarbrMình đồng ý với hướng build AM5 bằng 7500F, nhưng nếu có thể cố thêm ngân sách thì nên lên RX 7600 ngay từ đầu. 4GB VRAM của RX 6500 XT bắt đầu khá chật với nhiều game mới, còn RX 7600 sẽ dùng thoải mái hơn trong vài năm tới.
-
Channel: Đánh giá sản phẩm DTVN
16-06-2026, 15:49 -
-
bởi theidiotcatTrong thời buổi vật giá leo thang, việc sắm một bộ máy tính chơi game đáp ứng đủ tiêu chí "ngon, bổ, rẻ" là ưu tiên hàng đầu của nhiều bạn trẻ. Lúc này, combo sử dụng vi xử lý AMD Ryzen 5 7500F kết hợp cùng card màn hình Radeon...
-
Channel: Đánh giá sản phẩm DTVN
16-06-2026, 10:16 -
-
bởi theidiotcatAMD Ryzen 9 9950X3D không chỉ là một bộ vi xử lý đơn thuần; nó là lời khẳng định về sức mạnh của kiến trúc Zen 5 kết hợp cùng công nghệ 3D V-Cache đột phá. Trong bối cảnh thị trường linh kiện PC cạnh tranh khốc liệt, đây được xem...
-
Channel: Đánh giá sản phẩm DTVN
15-06-2026, 09:21 -
-
bởi theidiotcatBộ đôi Ryzen 9 9950X3D2 và Radeon RX 9070 XT 16GB là sự kết hợp phần cứng cao cấp nhất của AMD hiện nay. Đây không chỉ là một dàn máy tính để giải trí thông thường, mà là công cụ làm việc mạnh mẽ dành cho những ai có nhu cầu xử lý cường...
-
Channel: Đánh giá sản phẩm DTVN
15-06-2026, 09:09 -
-
bởi theidiotcatKhi ráp một bộ máy tính cấu hình cao, việc cân đối ngân sách cho từng linh kiện là rất quan trọng. Sự kết hợp giữa vi xử lý AMD Ryzen thế hệ mới có công nghệ 3D V-Cache và card đồ họa Radeon RX 9070 XT đang là lựa chọn rất đáng tiền....
-
Channel: Đánh giá sản phẩm DTVN
11-06-2026, 10:43 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Giới thiệu bản nhạc đệm mới nhộn nhịp tươi vui, nghe là muốn... xuất gia đi tu liền!!!!😁...
-
Channel: Tâm tình dân kỹ thuật
11-06-2026, 09:51 -

Comment